package com.chaosj.skill.discovery.loadbalance

import org.springframework.util.CollectionUtils

/**
 * @Description:
 * @author: caoyangjie
 * @date: 2019年12月2019/12/23日 17:20
 * @Copyright: © 赢时胜
 */
abstract class AbstractLoadBalance implements ILoadBalance{
    @Override
    Object select(List invokers) throws Exception {
        if (CollectionUtils.isEmpty(invokers)) {
            return null
        }
        if (invokers.size() == 1) {
            return invokers.get(0)
        }
        return doSelect(invokers)
    }

    /**
     * Do select t.
     *
     * @param <T>      the type parameter
     * @param invokers the invokers
     * @return the t
     */
    abstract <T> T doSelect(List<T> invokers);
}
